//Flies sideways and shoots lasers

script_enemy_main{

let GRenemy=("\script\Images\Enemies\Ghosts.png");
let SElaserm2=("script\SoundEffects\laserm2.wav");
let SEdeath=("script\SoundEffects\enemydeath1.wav");
let miny=GetClipMinY; let maxy=GetClipMaxY; let minx=GetClipMinX; let maxx=GetClipMaxX;
let cx=GetCenterX; let cy=GetCenterY;
let startx=GetX; let starty=GetY;
let frame=0; let time=0; let animation=0;
let ani=6;
let scale=0.75;
let shots=0;
let shotcolor=3; let shotspeed=0;
let oldX=0; let oldY=0;
let invincible=125;

if(startx<minx){ SetAngle(0); }
if(startx>minx){ SetAngle(180); }
SetSpeed(2);

@Initialize{
	LoadGraphic("\script\Images\Enemies\Ghosts.png");
	LoadSE("script\SoundEffects\laserm2.wav");

	SetInvincibility(30);
	SetLife(17);
	SetDamageRate(10,3); 
	SetScore(1000);
	SetShotColor(255,255,255);
}

@MainLoop{

if(GetX<=minx-32 || GetX>=maxx+32 || GetY<=miny-32 || GetY>=maxy+32 && frame>=60){ VanishEnemy; }

if((GetX>minx && GetX<maxx) && (GetY>miny && GetY<maxy)){
SetCollisionA(GetX,GetY,32*scale);
SetCollisionB(GetX,GetY,32*scale);


if(GetCommonData("Difficulty")==1){
	if(GetX>minx && GetX<maxx && time%60==0 && shots<3){
	let size=4;
	let angle=GetArgument[1];
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),1.75,angle+(360/(size/2)),60,10,36+GetArgument[0],10); }
		if(startx>cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),1.75,angle-(360/(size/2)),60,10,36+GetArgument[0],10); }
		angle+=360/size;
		}
	let angle=rand(0,360);
		loop(2){
		let angle2=rand(0,360);
		let speed2=rand(1,1.5);
			loop(6){
			let radius2=rand(0,10);
			CreateShot02(GetX+radius2*cos(angle2),GetY+radius2*sin(angle2),5,angle,-0.15,speed2,180+GetArgument[0],10);
			angle2+=360/6;
			}
		angle+=(360/2)+rand(-10,10);
		}
	PlaySE(SElaserm2);
	shots++;
	}
} //Easy

if(GetCommonData("Difficulty")==2){
	if(GetX>minx && GetX<maxx && time%60==0 && shots<3){
	let size=5;
	let angle=GetArgument[1];
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2,angle+(360/(size/2)),80,10,36+GetArgument[0],10); }
		if(startx>cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2,angle-(360/(size/2)),80,10,36+GetArgument[0],10); }
		angle+=360/size;
		}
	angle+=360/(size*2);
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),2.5,angle+180-(360/(size/2)),50,10,36+GetArgument[0]+1,10); }
		if(startx>cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),2.5,angle+180+(360/(size/2)),50,10,36+GetArgument[0]+1,10); }
		angle+=360/size;
		}
	let angle=rand(0,360);
		loop(3){
		let angle2=rand(0,360);
		let speed2=rand(1.25,1.75);
			loop(6){
			let radius2=rand(0,10);
			CreateShot02(GetX+radius2*cos(angle2),GetY+radius2*sin(angle2),5,angle,-0.15,speed2,180+GetArgument[0],10);
			angle2+=360/6;
			}
		angle+=(360/3)+rand(-10,10);
		}
	PlaySE(SElaserm2);
	shots++;
	}
} //Normal

if(GetCommonData("Difficulty")==3){
	if(GetX>minx && GetX<maxx && time%60==0 && shots<4){
	let size=6;
	let angle=GetArgument[1];
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2.25,angle+(360/(size/2)),100,10,36+GetArgument[0],10); }
		if(startx>cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2.25,angle-(360/(size/2)),100,10,36+GetArgument[0],10); }
		angle+=360/size;
		}
	angle+=360/(size*2);
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),3.5,angle+180-(360/(size/2)),55,10,36+GetArgument[0]+1,10); }
		if(startx>cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),3.5,angle+180+(360/(size/2)),55,10,36+GetArgument[0]+1,10); }
		angle+=360/size;
		}
	let angle=rand(0,360);
		loop(5){
		let angle2=rand(0,360);
		let speed2=rand(1.5,1.75);
			loop(6){
			let radius2=rand(0,10);
			CreateShot02(GetX+radius2*cos(angle2),GetY+radius2*sin(angle2),5,angle,-0.15,speed2,180+GetArgument[0],10);
			angle2+=360/6;
			}
		angle+=(360/5)+rand(-10,10);
		}
	PlaySE(SElaserm2);
	shots++;
	}
} //Hard

if(GetCommonData("Difficulty")==4){
	if(GetX>minx && GetX<maxx && time%60==0 && shots<5){
	let angle=GetArgument[1];
	let size=7;
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2.5,angle+(360/(size/2)),120,10,36+GetArgument[0],10); }
		if(startx>cx){ CreateLaser01(GetX+20*cos(angle),GetY+20*sin(angle),2.5,angle-(360/(size/2)),120,10,36+GetArgument[0],10); }
		angle+=360/size;
		}
	angle+=360/(size*2);
		loop(size){
		if(startx<cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),3.5,angle+180-(360/(size/2)),60,10,36+GetArgument[0]+1,10); }
		if(startx>cx){ CreateLaser01(GetX+40*cos(angle),GetY+40*sin(angle),3.5,angle+180+(360/(size/2)),60,10,36+GetArgument[0]+1,10); }
		angle+=360/size;
		}
	let angle=rand(0,360);
		loop(7){
		let angle2=rand(0,360);
		let speed2=rand(1.5,2);
			loop(6){
			let radius2=rand(0,10);
			CreateShot02(GetX+radius2*cos(angle2),GetY+radius2*sin(angle2),5,angle,-0.15,speed2,180+GetArgument[0],10);
			angle2+=360/6;
			}
		angle+=(360/7)+rand(-10,10);
		}
	PlaySE(SElaserm2);
	shots++;
	}
} //Lunatic
} //Onscreen


if(GetArgument[2]==1){
	if(time<60){
		if(GetSpeed<5){ SetSpeed(GetSpeed+0.1); }
		if(startx<cx){ SetAngle(GetAngle-0.5); }
		if(startx>cx){ SetAngle(GetAngle+0.5); }
	}
	if(time>=60 && time<300){
		if(GetSpeed>2){ SetSpeed(GetSpeed-0.05); }
		if(startx<cx){ SetAngle(GetAngle+2.5); }
		if(startx>cx){ SetAngle(GetAngle-2.5); }
	}
	if(time>=300){
		if(GetSpeed<5){ SetSpeed(GetSpeed+0.05); }
		if(startx<cx){ SetAngle(GetAngle+0.5); }
		if(startx>cx){ SetAngle(GetAngle-0.5); }
	}
}
if(GetArgument[2]==2){
	if(time<35){
		if(GetSpeed<5){ SetSpeed(GetSpeed+0.08); }
		if(startx<cx){ SetAngle(GetAngle-2.5); }
		if(startx>cx){ SetAngle(GetAngle+2.5); }
	}
	if(time>=35 && time<50){
		if(GetSpeed>2){ SetSpeed(GetSpeed-0.05); }
	}
	if(time>=50 && time<90){
		if(GetSpeed>2){ SetSpeed(GetSpeed-0.05); }
		if(startx<cx){ SetAngle(GetAngle+0.5); }
		if(startx>cx){ SetAngle(GetAngle-0.5); }
	}
	if(time>=90 && time<180){
		if(GetSpeed<5){ SetSpeed(GetSpeed+0.05); }
		if(startx<cx){ SetAngle(GetAngle+2.5); }
		if(startx>cx){ SetAngle(GetAngle-2.5); }
	}
}


oldX=GetX;
oldY=GetY;
frame++;
time++;
animation++;
if(animation>=ani*6){ animation=0; }
if(GetTimeOfInvincibility<25 && invincible>0){ invincible=GetTimeOfInvincibility*5; }

}

@DrawLoop{
	SetTexture(GRenemy);
	SetGraphicAngle(0,0,0);
	SetGraphicScale(1,1);
	SetGraphicRect(160,211,207,274);
		if(oldX<GetX || oldX>GetX){ SetGraphicRect(208,211,255,274); }
		if(oldX<GetX){ SetGraphicAngle(180,0,0); }
	DrawGraphic(GetX,GetY+5*sin(time*2));
}

@Finalize{
if(BeVanished==false){
PlaySE(SEdeath);
	loop(2){ CreateEnemyFromFile("script\Functions\itemscore.txt",GetX+rand(-25,25),GetY+rand(-50,50),0,0,0); }
	loop(2){ CreateEnemyFromFile("script\Functions\itempoint.txt",GetX+rand(-40,40),GetY+rand(-50,50),0,0,0); }
#include_function "script/Functions/PlayerTypeBonus.txt";
}
}

}